import configparser
import os
import sys

def get_config_path():
    if getattr(sys, 'frozen', False):
        # 如果程序被打包成了单文件
        application_path = os.path.dirname(sys.executable)
    else:
        # 如果程序是从源代码直接运行
        application_path = os.path.dirname(__file__)
    # 公用配置文件
    common_config_path = os.path.join(application_path, 'common.conf')
    # 业务专用配置文件
    server_name=os.path.basename(os.path.dirname(application_path))
    server_config_path = os.path.join(application_path, f"{server_name}.conf")
    return common_config_path,server_config_path

common_config_path,server_config_path = get_config_path()
__cf_parser = configparser.ConfigParser()
__cf_parser.read(common_config_path, encoding='utf-8')
__cf_parser.read(server_config_path, encoding='utf-8')


# === 1. 加载通用配置文件===
if os.path.exists(common_config_path):
    __cf_parser.read(common_config_path, encoding='utf-8')
    print(f"[加载通用配置文件]: {common_config_path}")
else:
    raise FileNotFoundError(f"[通用配置文件未找到]: {common_config_path}")
# === 2. 加载业务专用配置文件（会覆盖通用配置中相同项）===
if os.path.exists(server_config_path):
    __cf_parser.read(server_config_path, encoding='utf-8')
    print(f"[加载业务配置文件]: {server_config_path}")
else:
    raise FileNotFoundError(f"[业务配置文件未找到]: {server_config_path}")

def get_config(section:str):
    """
    将加载器中得配置项，加载到config中，以供使用
    """
    config = {}
    if __cf_parser.has_section(section=section):
        items = __cf_parser.items(section)
        for item in items:
            config[item[0]] = item[1]
        return config
    else:
        print(f'配置项{section}未找到')
        return config
   